package com.CST.service.cb;

import com.CST.dto.cb.DateDTO;
import com.CST.entity.cb.BaseSalary;
import com.CST.vo.cb.ReportBaseSalaryVO;
import com.CST.vo.cb.ReportSalaryDetailVO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author ly
 * @since 2022-04-20
 */
public interface IBaseSalaryService extends IService<BaseSalary> {

    /**
     * 采集人员经费明细
     * @param dateDTO
     */
    void insertBaseSalary(DateDTO dateDTO);



    /**
     * 获取人员经费1级详情
     * 需要传入父级科室
     * 按照账套归类显示
     * @param dateDTO
     * @param pDeptCode
     * @return
     */
    List listSalaryWithAccByPDeptCode(DateDTO dateDTO, String pDeptCode);

    /**
     * 根据父级科室+子科室获取人员经费明细
     * 点击人员经费1级明细的子科室生效
     * @param dateDTO
     * @param pDeptCode
     * @param deptCode
     * @return
     */
    List<BaseSalary> listSalaryByPDeptCodeAndDeptCode(DateDTO dateDTO, String pDeptCode, String deptCode);

    /**
     * 人员经费明细
     * 点击人员经费1级明细的账套生效
     * @param dateDTO
     * @param pDeptCode
     * @param deptCode
     * @param accId
     * @return
     */
    List<ReportBaseSalaryVO> listSalaryByDeptAndAccId(DateDTO dateDTO, String pDeptCode, String deptCode, String accId);

    /**
     * 人员经费1级明细
     * 查询薪酬和绩效系统的人员经费总额
     * 需要传入时间和父级科室信息
     *
     * @param dateDTO
     * @param pDeptCode
     * @return
     */
    List<ReportBaseSalaryVO> listSalaryWithExtraByPDeptCode(DateDTO dateDTO, String pDeptCode);

    List<ReportBaseSalaryVO> listSalaryWithExtraBydeptCode(DateDTO dateDTO, String deptCode);

    /**
     * 人员经费 薪酬 二级明细
     * 传入时间+父级科室+子科室
     * 根据成本项目分组计算每个员工，各个成本项目的人员经费明细
     * @param dateDTO
     * @param pDeptCode
     * @param deptCode
     * @return
     */
    List<ReportSalaryDetailVO> listSalaryDetailByDateAndPDeptAndDept(DateDTO dateDTO, String pDeptCode, String deptCode);

    /**
     * 人员经费 绩效 二级明细
     * 传入时间+父级科室+子科室
     * @param dateDTO
     * @param pDeptCode
     * @param deptCode
     * @return
     */
    List<ReportBaseSalaryVO> listPerformanceDetailByDateAndPDeptAndDept(DateDTO dateDTO, String pDeptCode, String deptCode);
}
